<?php
require_once('Vega/Dao/Table.php');

/*
 * Lớp DAO xử lý với bảng movie_server
 * Module tương ứng là mediaserver
 */
class Mobitv_Admin_MediaServerDao extends Vega_Dao_Table {

    /*
     * Hàm lấy toàn bộ danh sách các media server
     * Không phân trang vì số lượng không nhiều
     */
    public function getList() {
        $sql = "SELECT m.*, a.name as updater FROM movie_server m LEFT JOIN admin a ON m.updatedBy=a.id WHERE deleted=0";
        $this->_db->query($sql);
        return $this->_db->fetchRowSet();
    }

    /*
     * Hàm thêm mới 1 media server với giá trị các trường (field) từ $data
     * @param $data array
     * @return false nếu không thêm được
     */
    public function add($data) {
        $name = $this->_db->valueQuote($data['name']);
        $address = $this->_db->valueQuote($data['address']);
        $directory = $this->_db->valueQuote($data['directory']);
        $actived = intval($data['actived']);
        if($actived){
            $sql = "UPDATE movie_server SET actived = 0";
            $this->_db->queryWrite($sql);
        }
        $description = (!empty($data['description'])) ? $this->_db->valueQuote($data['description']) : '';
        if (empty($description))
            $sql = "INSERT INTO movie_server
                    SET name=$name, address=$address, directory=$directory, actived=$actived, streaming_address=$address,
                        createdTime=now(), updatedBy=" . $_SESSION['userid'];
        else
            $sql = "INSERT INTO movie_server
                    SET name=$name, address=$address, streaming_address=$address, directory=$directory, description=$description, actived=$actived,
                        createdTime=now(), updatedBy=" . $_SESSION['userid'];
        return $this->_db->queryWrite($sql);
    }

    /*
     * Hàm lấy thông tin chi tiết của 1 media server từ mã $serverId
     * @param $serverId int
     */
    public function getDetail($serverId) {
        $sql = "SELECT * FROM movie_server WHERE msID=$serverId";
        $this->_db->query($sql);
        return $this->_db->fetchRow();
    }

    /*
     * Hàm cập nhật thông tin chi tiết của một media server có mã $serverId
     * @param $data array
     * @param $serverId int
     */
    public function save($data, $serverId) {
        $userId = $_SESSION['userid'];
        $name = $this->_db->valueQuote($data['name']);
        $address = $this->_db->valueQuote($data['address']);
        $directory = $this->_db->valueQuote($data['directory']);
        $actived = $data['actived'];
        if($actived){
            $sql = "UPDATE movie_server SET actived = 0";
            $this->_db->queryWrite($sql);
        }
        $description = (!empty($data['description'])) ? $this->_db->valueQuote($data['description']) : '';
        if (empty($description)){
            $sql = "UPDATE movie_server
                    SET name=$name, address=$address, directory=$directory, streaming_address=$address,
                        updatedTime=now(), updatedBy=$userId
                    WHERE msID=$serverId";
            if($actived){
                $sql = "UPDATE movie_server
                    SET name=$name, address=$address, directory=$directory, streaming_address=$address,
                        updatedTime=now(), updatedBy=$userId, actived=$actived
                    WHERE msID=$serverId";
            }
        }else{
            $sql = "UPDATE movie_server
                    SET name=$name, address=$address, directory=$directory, description=$description, streaming_address=$address,
                        updatedTime=now(), updatedBy=$userId
                    WHERE msID=$serverId";
            if($actived){
                $sql = "UPDATE movie_server
                    SET name=$name, address=$address, directory=$directory, streaming_address=$address,
                        updatedTime=now(), updatedBy=$userId, actived=$actived
                    WHERE msID=$serverId";
            }
        }
        return $this->_db->queryWrite($sql);
    }
    /*
     * Hàm xóa các media server có mã nằm trong mảng $list
     * Thực chất việc xóa mới chỉ là UPDATE set trường deleted thành 1
     * @param $list array (int)
     */
    public function deleteFromList($list) {
        $list = "(" . implode(",", $list) . ")";
        $sql = "UPDATE movie_server SET deleted=1 WHERE msID IN $list";
        return $this->_db->queryWrite($sql);
    }
}